# -*- coding: utf-8 -*-

#   This file is part of wikilabsis.
#
#    wikilabsis is free software; you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation; either version 2 of the License, or
#    (at your option) any later version.
#
#    wikilabsis is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with wikilabsis; if not, write to the Free Software
#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

# http://en.wikipedia.org/wiki/Help:Wikitext

class Formateador( object ):
    '''clase abstracta que define una interfaz unificada para
    la implementacion de clases que generen diversos formatos'''
    
    def __init__( self, text ):
        '''Contructor'''
        
        self.texto = texto
    
    def formatear( self ):
        '''transforma self.texto al formato destino'''
        
        return self.texto
    
class Elemento( object ):
    '''representa un elemento generico en el texto'''
    
    def __init__( self, contenido ):
        '''contructor'''
        
        self.contenido = contenido
        
    def __repr__( self ):
        return self.contenido
    
    def parsear( self ):
        '''parsea el contenido y genera la estructura interna'''
        
        pass
    
class Negrita( Elemento ):
    '''representa un texto resaltado'''
    
    def __init__( self, contenido ):
        '''constructor'''
        
        Elemento.__init__( contenido )
        
class Subrayado( Elemento ):
    '''representa un texto subrayado'''
    
    def __init__( self, contenido ):
        '''constructor'''
        
        Elemento.__init__( contenido )
        
class Italica( Elemento ):
    '''representa un texto inclinado'''
    
    def __init__( self, contenido ):
        '''constructor'''
        
        Elemento.__init__( contenido )
        
class Titulo( Elemento ):
    '''representa un texto de titulo'''
    
    def __init__( self, contenido, nivel ):
        '''constructor'''
        
        Elemento.__init__( contenido )
        
        self.nivel = nivel
        
class Lista( Elemento ):
    '''representa una lista ya sea ordenada o no'''
    
    ORDENADA = 1
    SIN_ORDEN = 2
    
    def __init__( self, contenido, tipo ):
        '''constructor'''
        
        Elemento.__init__( contenido )
        self.tipo = tipo
        
class Enlace( Elemento ):
    '''representa un enlace'''
    
    INTERNO = 1
    EXTERNO = 2
    
    def __init__( self, contenido, referencia, tipo ):
        '''constructor'''
        
        Elemento.__init__( contenido )
        self.referencia = referencia
        self.tipo = tipo
        
class Linea( Elemento ):
    '''representa una linea divisoria'''
    
    def __init__( self ):
        '''constructor'''
        
        Elemento.__init__( "" )
        

